Discussion module:Wikidata/Nommage

Le contenu de la page n’est pas pris en charge dans d’autres langues.
Une page de Wikipédia, l'encyclopédie libre.

Fonctionnement du module[modifier le code]

J'ai du mal à comprendre comment fonctionne ce module, il y a apparemment quelques erreurs dans le passage des arguments entre fonctions. Mais pour afficher un nom en fonction d'une date, le plus simple n'est-il pas d'utiliser le paramètre atdate de Module:Wikidata par exemple

{{Wikidata|P1448|entity=Q192393|atdate= {{wikidata|P569|entity=Q2977199}} }}

-> Évry-Petit-Bourg Zolo (discuter) 3 novembre 2018 à 17:05 (CET)[répondre]

Notification Zolo : Je suis en train de simplifier le truc pour utiliser le paramètre « labelformat » plutôt que « formatstatement » (ce qui était une mauvaise idée), ça va déjà simplifier pas mal les choses. L’idée c’est de générer des fonctions pour les utiliser en « labelformat ». Ces fonctions calculent elle même la date avec les données qu’on fournit en paramètres au fonction qui les retournent (ce sont des fonctions qui construisent d’autre fonction, en l’occurence des clotures), ce qui devrait faciliter leur intégration dans les modèles. Ca peut sembler incorrect si on a pas l’habitude mais je ne pense pas qu’il y ait d’erreur. Par exemple, il y aura une fonction
Par exemple la fonction de ce diff crée une fonction « labelformat ». Si on fait local formatter = nameAtDatePropLabelFormatter("PdateDeNaissance", "Qpersonne"), la variable « formatter » est une fonction qui va prendre en paramètre un élément, comme est supposé le faire le paramètre « labelformat » qui est utilisé pour afficher un nom de métier en fonction du genre. Elle va elle même récupérer la date de référence grâce à "PdateDeNaissance" et "Qpersonne" qui ont été fournies à son constructeur. Du coup ça évite d’avoir à calculer la date dans les fonctions du module. — TomT0m [bla] 3 novembre 2018 à 17:35 (CET)[répondre]
Je crois voir plus ou moins l'idée, mais pas très précisément. Il y a sans doute quelque chose à faire, mais il me semble que le module Wikidata actuel est déjà équipé pour faire une bonne partie du boulot, et ça me parait dommage de dupliquer son travail à un autre endroit (on a déjà suffisamment de code dans tous les sens sans ça ;).
Le module ne conserve pas les paramètres de mise en forme du module d'origine. Pour la fonction Lieu de naissance, les "valeurs inconnues" devraient être transformé en "lieu inconnu". Je pensais que c'était l'objectif du paramètre "params" de <ocde>nameAtDatePropStatementFormatter/code>, mais il sert peut-être à toute autre chose. En tout cas, si on utilise directement les fonctionnalités de Module:Wikidata, tout semble fonctionner. Voir Jacques Maurais (je voulais faire le test dans le bac à sable mais j'ai modifié la mauvaise page...). Zolo (discuter) 3 novembre 2018 à 18:13 (CET)[répondre]
Notification Zolo : Oui je viens de voir ce diff : https://fr.wikipedia.org/w/index.php?title=Module:Infobox/Fonctions/Personne&diff=153642636&oldid=153641767 c’est effectivement assez simple dans l’esprit, par contre je me demande un ou deux trucs : je suis pas certain que le contenu de « birthdate » soit toujours exploitable ? Je trouvais plus propre de le calculer directement depuis la date Wikidata que d’éventuellement chercher à parser la valeur formatée, j’ai eu l’impression en lisant le code de l’infobox que « birthdate » pouvait avoir un peu tout et n’imp comme valeur …
Sinon mon code gère le cas tordu ou il y aurait plusieurs date de naissance, également, mais c’est vraiment du pinaillage je l’accorde :)
Je pensai à terme effectivement réfléchir à rapatrier tout ça dans Module:Wikidata si pertinent, mais pas avant de maîtriser un peu plus le truc pour pas faire n’importe quoi.
« Je pensais que c'était l'objectif du paramètre "params" de nameAtDatePropStatementFormatter, mais il sert peut-être à toute autre chose. » non c’est bien ça, l’idée c’était d’hériter des paramètres passés à ses appelant pour avoir un comportement comme attendu, mais je me suis probablement raté quelque part. — TomT0m [bla] 3 novembre 2018 à 18:59 (CET)[répondre]
Effectivement, en fait ma version ne marchait pas du coup, j'ai gardé la version avec atdate= mais en récupérant une date propre à l'intérieur de la fonction. Cela dit, les date de naissance et de décès sont censé être données dans un format relativement standardisées même quand elles sont mises en local, de manière à pouvoir faire une mise en forme / calcul d'âge automatique. Donc logiquement on devrait pouvoir étendre la fonctionnalité atdate pour qu'elle fonctionne avec des données sous différents formats. En fait, si on veut rigoureusement appliquer les règles, il faudrait utiliser en priorité la date fournie en local comme référence.
Sinon, je suis encore dubitatif sur cette fonctionnalité en termes de performances. Si on ne l'utilise qu'une ou deux fois dans les infobox, ça doit encore passer, mais la tentation risque d'être grand de la mettre un peu partout. -Zolo (discuter) 4 novembre 2018 à 12:47 (CET)[répondre]
Notification Zolo : Tu es au courant qu'on est plus obligé de charger tout l'élément pour récupérer les déclaration ? Les fonctions mw.wikibase.getAll/BestStatement() fonctionnent avec un qid et ne sont si je ne m'abuse pas marquées "expensive", ce qui est rassurant de ce point de vue. C'était d'ailleurs une de mes motivation pour mettre ça dans un module à part, utiliser ces fonctions, ayant eu l'impression que le module Wikidata n'a pas été mis à jour. Et oui, mettre ça un peu partout c'est clairement l'intérêt du module - par exemple avoir un "formatstatement" qui récupère lui même la date de validité de la déclaration pour afficher le libellé d'un élément à cette date est intéressant. — TomT0m [bla] 4 novembre 2018 à 14:38 (CET)[répondre]
Top ! J'avais effectivement vu ces fonctions mais pas réalisé que ça ne chargeait pas l'entité complète. J'ai fait une mise à jour sur Module:Wikidata/Bac à sable, et effectivement pour Marguerite Duras on passe de 25 entité 13,1 Mo à 13 entité 9,9 Mo et sur Discusion module:Adresse/test de 18,4 à 4,45 Mo. Ca ouvre bien des perspectives. Je me suis encore allé trop vite dans l'enregistrement, j'ai mis sur le module plutôt que dans le bac à sable, du coup je ne t'ai pas crédité ! J'espère qu'il n'y a pas de bug.. Zolo (discuter) 4 novembre 2018 à 15:19 (CET)[répondre]